/**
 * 
 *  Este arquivo é parte do programa TODO Ver nome. TODO Ver nome é um software livre; você pode redistribui-lo e/ou 
 *  modifica-lo dentro dos termos da Licença Pública Geral GNU como publicada pela Fundação do Software Livre (FSF); 
 *  na versão 2 da Licença, ou (na sua opnião) qualquer versão.
 *  
 *	Este programa é distribuido na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implicita
 *  de ADEQUAÇÂO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes.
 *	Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa, se não, escreva para a Fundação do
 *	Software Livre(FSF) 
 *
 *	Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 * 
 */

package fullcalc.conversores.temperatura.implementacao;

import fullcalc.comum.enums.TipoConversaoTemperatura;
import fullcalc.comum.util.CalculadoraUtil;
import fullcalc.conversores.temperatura.abstrata.AbstractMedidaTemperatura;

/**
 * <p>
 * Classe que converte as temperaturas
 * </p>
 * 
 * @author Marcos Oliveira Soares
 * @author Thaís Pereira Medrado
 */
public class ConversorMedidaTemperatura extends AbstractMedidaTemperatura {

	public ConversorMedidaTemperatura() {
		super();
	}

	public void executaConversao(double valor,
			TipoConversaoTemperatura tipoConversao) {
		switch (tipoConversao) {

		case CELSIUS_KELVIN: {
			setResultado(getValor() + CalculadoraUtil.VALOR_MINIMO_KELVIN);
		}
			break;

		case CELCIUS_FAHRENHEIT: {
			setResultado(((getValor() / CalculadoraUtil.CONSTANTE_DE_CELCIUS) * CalculadoraUtil.CONSTANTE_DE_KELVIN)
					+ CalculadoraUtil.VALOR_MINIMO_FAHRENHEIT);
		}
			break;

		case KELVIN_CELCIUS: {
			setResultado(getValor() - CalculadoraUtil.VALOR_MINIMO_KELVIN);
		}
			break;

		case KELVIN_FAHRENHEIT: {
			setResultado((getValor() * CalculadoraUtil.CONSTANTE_DE_KELVIN_FAHRENHEIT_1)
					- CalculadoraUtil.CONSTANTE_DE_KELVIN_FAHRENHEIT_2);
		}

			break;

		case FAHRENHEIT_CELSIUS: {
			setResultado((getValor() - CalculadoraUtil.VALOR_MINIMO_FAHRENHEIT)
					/ CalculadoraUtil.CONSTANTE_DE_KELVIN_FAHRENHEIT_1);
		}

			break;

		case FAHRENHEIT_KELVIN: {
			setResultado(((getValor() - CalculadoraUtil.VALOR_MINIMO_FAHRENHEIT) / CalculadoraUtil.CONSTANTE_DE_KELVIN_FAHRENHEIT_1)
					+ CalculadoraUtil.VALOR_MINIMO_KELVIN);
		}

			break;

		default:
			System.out.println("Buneca");

			break;
		}

	}

}
